home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / bits / resource.h < prev    next >
C/C++ Source or Header  |  2006-05-08  |  7KB  |  215 lines

  1. /* Bit values & structures for resource limits.  Linux version.
  2.    Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2004
  3.    Free Software Foundation, Inc.
  4.    This file is part of the GNU C Library.
  5.  
  6.    The GNU C Library is free software; you can redistribute it and/or
  7.    modify it under the terms of the GNU Lesser General Public
  8.    License as published by the Free Software Foundation; either
  9.    version 2.1 of the License, or (at your option) any later version.
  10.  
  11.    The GNU C Library is distributed in the hope that it will be useful,
  12.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.    Lesser General Public License for more details.
  15.  
  16.    You should have received a copy of the GNU Lesser General Public
  17.    License along with the GNU C Library; if not, write to the Free
  18.    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  19.    02111-1307 USA.  */
  20.  
  21. #ifndef _SYS_RESOURCE_H
  22. # error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
  23. #endif
  24.  
  25. #include <bits/types.h>
  26.  
  27. /* Transmute defines to enumerations.  The macro re-definitions are
  28.    necessary because some programs want to test for operating system
  29.    features with #ifdef RUSAGE_SELF.  In ISO C the reflexive
  30.    definition is a no-op.  */
  31.  
  32. /* Kinds of resource limit.  */
  33. enum __rlimit_resource
  34. {
  35.   /* Per-process CPU limit, in seconds.  */
  36.   RLIMIT_CPU = 0,
  37. #define RLIMIT_CPU RLIMIT_CPU
  38.  
  39.   /* Largest file that can be created, in bytes.  */
  40.   RLIMIT_FSIZE = 1,
  41. #define    RLIMIT_FSIZE RLIMIT_FSIZE
  42.  
  43.   /* Maximum size of data segment, in bytes.  */
  44.   RLIMIT_DATA = 2,
  45. #define    RLIMIT_DATA RLIMIT_DATA
  46.  
  47.   /* Maximum size of stack segment, in bytes.  */
  48.   RLIMIT_STACK = 3,
  49. #define    RLIMIT_STACK RLIMIT_STACK
  50.  
  51.   /* Largest core file that can be created, in bytes.  */
  52.   RLIMIT_CORE = 4,
  53. #define    RLIMIT_CORE RLIMIT_CORE
  54.  
  55.   /* Largest resident set size, in bytes.
  56.      This affects swapping; processes that are exceeding their
  57.      resident set size will be more likely to have physical memory
  58.      taken from them.  */
  59.   __RLIMIT_RSS = 5,
  60. #define    RLIMIT_RSS __RLIMIT_RSS
  61.  
  62.   /* Number of open files.  */
  63.   RLIMIT_NOFILE = 7,
  64.   __RLIMIT_OFILE = RLIMIT_NOFILE, /* BSD name for same.  */
  65. #define RLIMIT_NOFILE RLIMIT_NOFILE
  66. #define RLIMIT_OFILE __RLIMIT_OFILE
  67.  
  68.   /* Address space limit.  */
  69.   RLIMIT_AS = 9,
  70. #define RLIMIT_AS RLIMIT_AS
  71.  
  72.   /* Number of processes.  */
  73.   __RLIMIT_NPROC = 6,
  74. #define RLIMIT_NPROC __RLIMIT_NPROC
  75.  
  76.   /* Locked-in-memory address space.  */
  77.   __RLIMIT_MEMLOCK = 8,
  78. #define RLIMIT_MEMLOCK __RLIMIT_MEMLOCK
  79.  
  80.   /* Maximum number of file locks.  */
  81.   __RLIMIT_LOCKS = 10,
  82. #define RLIMIT_LOCKS __RLIMIT_LOCKS
  83.  
  84.   /* Maximum number of pending signals.  */
  85.   __RLIMIT_SIGPENDING = 11,
  86. #define RLIMIT_SIGPENDING __RLIMIT_SIGPENDING
  87.  
  88.   /* Maximum bytes in POSIX message queues.  */
  89.   __RLIMIT_MSGQUEUE = 12,
  90. #define RLIMIT_MSGQUEUE __RLIMIT_MSGQUEUE
  91.  
  92.   __RLIMIT_NLIMITS = 13,
  93.   __RLIM_NLIMITS = __RLIMIT_NLIMITS
  94. #define RLIMIT_NLIMITS __RLIMIT_NLIMITS
  95. #define RLIM_NLIMITS __RLIM_NLIMITS
  96. };
  97.  
  98. /* Value to indicate that there is no limit.  */
  99. #ifndef __USE_FILE_OFFSET64
  100. # define RLIM_INFINITY ((unsigned long int)(~0UL))
  101. #else
  102. # define RLIM_INFINITY 0xffffffffffffffffuLL
  103. #endif
  104.  
  105. #ifdef __USE_LARGEFILE64
  106. # define RLIM64_INFINITY 0xffffffffffffffffuLL
  107. #endif
  108.  
  109. /* We can represent all limits.  */
  110. #define RLIM_SAVED_MAX    RLIM_INFINITY
  111. #define RLIM_SAVED_CUR    RLIM_INFINITY
  112.  
  113.  
  114. /* Type for resource quantity measurement.  */
  115. #ifndef __USE_FILE_OFFSET64
  116. typedef __rlim_t rlim_t;
  117. #else
  118. typedef __rlim64_t rlim_t;
  119. #endif
  120. #ifdef __USE_LARGEFILE64
  121. typedef __rlim64_t rlim64_t;
  122. #endif
  123.  
  124. struct rlimit
  125.   {
  126.     /* The current (soft) limit.  */
  127.     rlim_t rlim_cur;
  128.     /* The hard limit.  */
  129.     rlim_t rlim_max;
  130.   };
  131.  
  132. #ifdef __USE_LARGEFILE64
  133. struct rlimit64
  134.   {
  135.     /* The current (soft) limit.  */
  136.     rlim64_t rlim_cur;
  137.     /* The hard limit.  */
  138.     rlim64_t rlim_max;
  139.  };
  140. #endif
  141.  
  142. /* Whose usage statistics do you want?  */
  143. enum __rusage_who
  144. {
  145.   /* The calling process.  */
  146.   RUSAGE_SELF = 0,
  147. #define RUSAGE_SELF RUSAGE_SELF
  148.  
  149.   /* All of its terminated child processes.  */
  150.   RUSAGE_CHILDREN = -1
  151. #define RUSAGE_CHILDREN RUSAGE_CHILDREN
  152. };
  153.  
  154. #define __need_timeval
  155. #include <bits/time.h>        /* For `struct timeval'.  */
  156.  
  157. /* Structure which says how much of each resource has been used.  */
  158. struct rusage
  159.   {
  160.     /* Total amount of user time used.  */
  161.     struct timeval ru_utime;
  162.     /* Total amount of system time used.  */
  163.     struct timeval ru_stime;
  164.     /* Maximum resident set size (in kilobytes).  */
  165.     long int ru_maxrss;
  166.     /* Amount of sharing of text segment memory
  167.        with other processes (kilobyte-seconds).  */
  168.     long int ru_ixrss;
  169.     /* Amount of data segment memory used (kilobyte-seconds).  */
  170.     long int ru_idrss;
  171.     /* Amount of stack memory used (kilobyte-seconds).  */
  172.     long int ru_isrss;
  173.     /* Number of soft page faults (i.e. those serviced by reclaiming
  174.        a page from the list of pages awaiting reallocation.  */
  175.     long int ru_minflt;
  176.     /* Number of hard page faults (i.e. those that required I/O).  */
  177.     long int ru_majflt;
  178.     /* Number of times a process was swapped out of physical memory.  */
  179.     long int ru_nswap;
  180.     /* Number of input operations via the file system.  Note: This
  181.        and `ru_oublock' do not include operations with the cache.  */
  182.     long int ru_inblock;
  183.     /* Number of output operations via the file system.  */
  184.     long int ru_oublock;
  185.     /* Number of IPC messages sent.  */
  186.     long int ru_msgsnd;
  187.     /* Number of IPC messages received.  */
  188.     long int ru_msgrcv;
  189.     /* Number of signals delivered.  */
  190.     long int ru_nsignals;
  191.     /* Number of voluntary context switches, i.e. because the process
  192.        gave up the process before it had to (usually to wait for some
  193.        resource to be available).  */
  194.     long int ru_nvcsw;
  195.     /* Number of involuntary context switches, i.e. a higher priority process
  196.        became runnable or the current process used up its time slice.  */
  197.     long int ru_nivcsw;
  198.   };
  199.  
  200. /* Priority limits.  */
  201. #define PRIO_MIN    -20    /* Minimum priority a process can have.  */
  202. #define PRIO_MAX    20    /* Maximum priority a process can have.  */
  203.  
  204. /* The type of the WHICH argument to `getpriority' and `setpriority',
  205.    indicating what flavor of entity the WHO argument specifies.  */
  206. enum __priority_which
  207. {
  208.   PRIO_PROCESS = 0,        /* WHO is a process ID.  */
  209. #define PRIO_PROCESS PRIO_PROCESS
  210.   PRIO_PGRP = 1,        /* WHO is a process group ID.  */
  211. #define PRIO_PGRP PRIO_PGRP
  212.   PRIO_USER = 2            /* WHO is a user ID.  */
  213. #define PRIO_USER PRIO_USER
  214. };
  215.